import { defineStore } from 'pinia'
import type { favouritesType } from 'typings/global';

// 第一个参数是应用程序中 store 的唯一 id
// 1．定义并导出容器
//参数1:容器的ID，必须唯一，将来Pinia 会把所以的容器挂载到根容器
//参数2:选项对象
export const userStore = defineStore('main',{
 // 推荐使用 完整类型推断的箭头函数
  state:() => {
    return {
      // 所有这些属性都将自动推断其类型
	  hasLogin: false,
	  token: '',
	  phone:"",
	  xieyiLink:"http://www.guangxins.cn/xieyi.html",
	  userData:{
		  userinfo:{},
		  pinfo:{}, //预约信息
		  bindusername:'',  //绑定用户的身份证，缓存，以免用户重新输入
		  binduseridcard:'',  //绑定用户的身份证，缓存，以免用户重新输入
		  appointmenthospital:'', //预约医院
		  appointment:'', //保存选择的预约时间
		  expireTime:0,  //现在时间-创建时间>保存时间
		  saveTime:'',  //创建时间
	  },
	  favourites:[], //本地收藏夹，用来存放用户收藏的商品id
	  targetUser:[], //PDF列表数据
	  getFavId:-1, //用来获取收藏的id
	  backRouter:'', //登录后，返回的路由 字符串类型 "../pages/shop_detail/shop_detail?pid=9"
      lookProductHistory:[], //浏览商品记录 [{"pid":1,"productInfo":"产品详细对象"}]
    }
  },
  /**
   * 类似于组件的 computed，用来封装计算属性,有缓存的功能
   **/
  getters:{
	  
  },
  
  /**
   * 类似于组件的methods，封装业务逻辑，修改state
   **/
   actions:{
	   // addFavourites(favObj:favouritesType){
		  //  let index=this.favourites.findIndex(item=>parseInt(item.productId)===favObj.productId);
		  //  if(index===-1){
	      //   this.favourites.push(favObj);
		  //  }
	   // },	   
	   //重置
	    remove(){
			this.userData.userinfo={}
			this.userData.expireTime=0
			this.userData.saveTime='';
		}
   },
  /**
   * 类似于组件的tethods，封装业务逻辑，修改state
   **/
   persist: {
       enabled: true,
	   /* strategies: [{
		 //storage: localStorage,
		 paths: ['userData','lookProductHistory','backRouter'],//指定要长久化的字段
	   }] */
   },
})